在這個到處都是敏捷開發的時代,常常會聽到 CI/CD
這類的名詞出現,那麼他們到底是什麼呢,就讓我們好好來探討一下。
相信有許多朋友在職場上會遇到以下的問題
與同事一起開發同一個功能,在經過無數的 commit 與 push 之後,到了要 merge 的環節發現專案有衝突或是無法編譯,才花費了許多時間排查問題。
每次都要耗費人力在做一些重複的工作,例如 merge 專案、做單元測試、打包與部署等步驟。
就算在測試環境通過測試,在久久一次需要發佈版本到 prodiction 環境時還是只能跟他賭,看看上線後會不會出現什麼異常,沒有異常最好,有異常要找問題是十分的困難。
那麼,以上的問題有什麼比較好的解決方法呢?
有的,可以透過導入 持續整合(CI)與持續交付(CD)
來避免掉上述問題。
配合 git flow
,當每次有 commit 被 push 到對應的 branch 時,都會自動執行 編譯
的動作,這樣的好處在於可以快速了解此次 commit 有沒有問題,有問題的話就可以即時的修正
在每次編譯完成後都會執行單元測試,目的在於檢查新功能的邏輯是否有異常,以及舊有功能是否有受到影響等等,透過這樣的確認可以有效地確保軟體品質。
此流程通常都是接續在 CI
之後,將已經驗證完畢的 code
發佈至 release branch
,這樣的好處在於我們隨時都有一個可以部署至生產區的程式碼。
有人把 CD 也稱作 持續部署(Continuous Deployment)
,跟持續交付的主要差異在於持續部署就是當程式碼測試通過就自動部署至生產區域,而持續交付需要人工的進行部署。
透過導入 CI / CD
可以減少開發過程中許多不必要的問題,也同時確保軟體品質不會低落,明天讓我們來講如何架設基礎環境吧!